/**
 * 认证相关API服务
 * 包含登录、注销和获取用户信息等功能
 */
import { AxiosPromise } from 'axios';
import { POST, GET } from './api';
import { ApiModule } from './config';
import { LoginData, LoginResult } from '../types/login';
// import { encryptLoginData } from '../utils/encryption';  // 暂时不使用加密
import axios from 'axios';
import { getToken } from '../utils/auth';

// 客户端ID
const clientId = 'e5cd7e4891bf95d1d19206ce24a7b32e';

/**
 * 用户登录API
 * @param data 登录数据
 * @returns 包含token的Promise
 */
export function login(data: LoginData): AxiosPromise<LoginResult> {
  // 补充默认值
  const loginData = {
    ...data,
    tenantId: data.tenantId || '000000',  // 确保有租户ID，默认为000000
    clientId: data.clientId || clientId,
    grantType: data.grantType || 'password'
  };
  
  // 不再进行加密处理，直接发送原始数据
  // const { data: encryptedData, headers } = encryptLoginData(loginData);
  
  return POST('login', loginData, { 
    module: ApiModule.AUTH,
    headers: {
      isToken: false,                // 无需携带token
      'Content-Type': 'application/json;charset=UTF-8',  // 使用JSON格式
      'Access-Control-Allow-Origin': '*', // 允许所有域名访问
      'X-Requested-With': 'XMLHttpRequest' // 标识为AJAX请求
    }
  });
}

/**
 * 用户注销
 * @returns Promise
 */
export function logout(): AxiosPromise<any> {
  return POST('logout', {}, { 
    module: ApiModule.AUTH
  });
}

/**
 * 获取用户信息
 * @returns 用户信息
 */
export function getUserInfo(): AxiosPromise<any> {
  // 使用getToken函数获取token
  const token = getToken();
  
  // 直接使用指定URL，并确保token正确传递
  return axios.get('http://localhost:8084/client/user/getInfo', {
    headers: {
      'Authorization': token ? 'Bearer ' + token : ''
    }
  });
} 